package com.loong.android.views.utils;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.text.Html;
import android.text.Spanned;

public class HtmlTools {
    //加载HTML文本,实现丰富文本的显示。
    //1.加载普通的HTML标签文本,例如：
    //"我是<font color="#FF0000">猎码</font>"
    //2.显示本地图片,例如：
    //<img src="+符号.引号+"storage/emulated/0/xxx.jpg"+符号.引号+" />"
    //3.显示资源图片,例如：
    //<img src="+符号.引号+图片.xxx+符号.引号+" />"
    //注意：android6.0以上版本,读取本地图片资源需要授权,如果HTML文本中包含本地图片路径,
    // "检测权限"需要传入真,否则在android6.0以上版本的手机无法正常显示本地图片
    //检测权限默认为真
    //另外,当检测权限为真时,最好不要在"窗口创建完毕"事件下使用此方法。
    public static Spanned getHtmlText(Context context, String htmlStr) {
        Spanned html;
        if (Build.VERSION.SDK_INT >= 24) {
            html = Html.fromHtml(htmlStr, Html.FROM_HTML_MODE_COMPACT, getImageGetter(context), null);
        } else {
            html = Html.fromHtml(htmlStr, getImageGetter(context), null);
        }
        return html;
    }

    private static Html.ImageGetter getImageGetter(Context context) {
        return new Html.ImageGetter() {
            public Drawable getDrawable(String source) {
                Drawable drawable = null;
                try {
                    //读取路径图片
                    drawable = Drawable.createFromPath(source);
                    if (drawable != null) {
                        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
                        return drawable;
                    }
                    //读取R资源图片
                    int rId = Integer.parseInt(source);
                    drawable = context.getResources().getDrawable(rId);
                    if (drawable != null)
                        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
                    return drawable;
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }
        };
    }
}
